/**
 * 高亮文本中的搜索关键词
 * @param text 原始文本（支持字符串或数字）,有可能后端返回的是数字，需要转成字符串（比如 data.id）
 * @param searchText 要高亮的关键词
 * @returns 带高亮标记的HTML字符串
 */
export function getHighLight(text: string | number, searchText?: string): string {
  if (typeof text === 'number') {
    text = String(text);
  }
  if (typeof text !== 'string') {
    return '';
  }

  const trimmedText = text.trim();
  if (!trimmedText) {
    return trimmedText;
  }

  // 处理searchText未定义或不是字符串的情况
  if (typeof searchText !== 'string') {
    return trimmedText;
  }

  const trimmedSearch = searchText.trim();
  if (!trimmedSearch) {
    return trimmedText;
  }

  try {
    const regex = new RegExp(escapeRegExp(trimmedSearch), 'gi');
    return trimmedText.replace(regex, '<mark class="hy-highlight-keyword">$&</mark>');
  } catch {
    return trimmedText;
  }
}

/**
 * 转义字符串中的正则特殊字符（优化版）
 * @param str 需要转义的字符串
 * @returns 转义后的字符串
 */
function escapeRegExp(str: string): string {
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
